home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / parted / exception.h < prev    next >
C/C++ Source or Header  |  2006-04-20  |  3KB  |  96 lines

  1. /*
  2.     libparted - a library for manipulating disk partitions
  3.     Copyright (C) 1999, 2000 Free Software Foundation, Inc.
  4.  
  5.     This program is free software; you can redistribute it and/or modify
  6.     it under the terms of the GNU General Public License as published by
  7.     the Free Software Foundation; either version 2 of the License, or
  8.     (at your option) any later version.
  9.  
  10.     This program is distributed in the hope that it will be useful,
  11.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.     GNU General Public License for more details.
  14.  
  15.     You should have received a copy of the GNU General Public License
  16.     along with this program; if not, write to the Free Software
  17.     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
  18. */
  19.  
  20. #ifndef PED_EXCEPTION_H_INCLUDED
  21. #define PED_EXCEPTION_H_INCLUDED
  22.  
  23. typedef struct _PedException PedException;
  24.  
  25. enum _PedExceptionType {
  26.     PED_EXCEPTION_INFORMATION=1,
  27.     PED_EXCEPTION_WARNING=2,
  28.     PED_EXCEPTION_ERROR=3,
  29.     PED_EXCEPTION_FATAL=4,
  30.     PED_EXCEPTION_BUG=5,
  31.     PED_EXCEPTION_NO_FEATURE=6,
  32. };
  33. typedef enum _PedExceptionType PedExceptionType;
  34.  
  35. enum _PedExceptionOption {
  36.     PED_EXCEPTION_UNHANDLED=0,
  37.     PED_EXCEPTION_FIX=1,
  38.     PED_EXCEPTION_YES=2,
  39.     PED_EXCEPTION_NO=4,
  40.     PED_EXCEPTION_OK=8,
  41.     PED_EXCEPTION_RETRY=16,
  42.     PED_EXCEPTION_IGNORE=32,
  43.     PED_EXCEPTION_CANCEL=64,
  44. };
  45. typedef enum _PedExceptionOption PedExceptionOption;
  46. #define PED_EXCEPTION_OK_CANCEL        (PED_EXCEPTION_OK + PED_EXCEPTION_CANCEL)
  47. #define PED_EXCEPTION_YES_NO        (PED_EXCEPTION_YES + PED_EXCEPTION_NO)
  48. #define PED_EXCEPTION_YES_NO_CANCEL (PED_EXCEPTION_YES_NO \
  49.                         + PED_EXCEPTION_CANCEL)
  50. #define PED_EXCEPTION_IGNORE_CANCEL (PED_EXCEPTION_IGNORE        \
  51.                      + PED_EXCEPTION_CANCEL)
  52. #define PED_EXCEPTION_RETRY_CANCEL  (PED_EXCEPTION_RETRY + PED_EXCEPTION_CANCEL)
  53. #define PED_EXCEPTION_RETRY_IGNORE_CANCEL (PED_EXCEPTION_RETRY        \
  54.                        + PED_EXCEPTION_IGNORE_CANCEL)
  55. #define PED_EXCEPTION_OPTION_FIRST PED_EXCEPTION_FIX
  56. #define PED_EXCEPTION_OPTION_LAST PED_EXCEPTION_CANCEL
  57.  
  58. struct _PedException {
  59.     char*            message;
  60.     PedExceptionType    type;
  61.     PedExceptionOption    options;    /* or'ed list of options that
  62.                            the exception handler can
  63.                            return */
  64. };
  65.  
  66. typedef PedExceptionOption (PedExceptionHandler) (PedException* ex);
  67.  
  68. extern int ped_exception;    /* set to true if there's an exception */
  69.  
  70. extern char* ped_exception_get_type_string (PedExceptionType ex_type);
  71. extern char* ped_exception_get_option_string (PedExceptionOption ex_opt);
  72.  
  73. extern void ped_exception_set_handler (PedExceptionHandler* handler);
  74. extern PedExceptionOption ped_exception_default_handler (PedException* ex);
  75.  
  76. extern PedExceptionOption    ped_exception_throw (PedExceptionType ex_type,
  77.                              PedExceptionOption ex_opt,
  78.                              const char* message,
  79.                              ...);
  80. /* rethrows an exception - i.e. calls the exception handler, (or returns a
  81.    code to return to pass up higher) */
  82. extern PedExceptionOption    ped_exception_rethrow ();
  83.  
  84. /* frees an exception, indicating that the exception has been handled.
  85.    Calling an exception handler counts. */
  86. extern void            ped_exception_catch ();
  87.  
  88. /* indicate that exceptions should not go to the exception handler, but passed
  89.    up to the calling function(s) */
  90. extern void            ped_exception_fetch_all ();
  91.  
  92. /* indicate that exceptions should invoke the exception handler */
  93. extern void            ped_exception_leave_all ();
  94.  
  95. #endif /* PED_EXCEPTION_H_INCLUDED */
  96.